home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib18.dsk / ATTACK OF THE SHAPES.bas < prev    next >
BASIC Source File  |  2023-02-26  |  8KB  |  151 lines

  1. 20  REM **********************
  2. 30  REM *  ATTACK OF SHAPES  *
  3. 40  REM *   BY BILL ZEMAN    *
  4. 50  REM * COPYRIGHT (C) 1984 *
  5. 60  REM * BY MICROSPARC, INC *
  6. 70  REM * LINCOLN, MA. 01773 *
  7. 80  REM **********************
  8. 90  LOMEM: 24576: GOSUB 1440: GOTO 1130
  9. 100  HOME : VTAB 12: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **": GOSUB 1300
  10. 110 D$ =  CHR$(4)
  11. 120  PRINT D$"BLOAD SHIPP": POKE 216,0
  12. 130  DIM FX(25): DIM FY(25): DIM FT(25)
  13. 140  DATA 255,90,190,90,151,20,190,20,255,90,151,90,190,90,151,20,190,20,255,90,151,90,190,90,151,20,190,20,255,90,255,90,190,200
  14. 150  GOSUB 1200
  15. 160 NF = 5:MF = 5
  16. 170  RESTORE 
  17. 180 GM =  FRE(0)
  18. 190  HGR2 : HCOLOR= 3: ROT= 0: SCALE= 1
  19. 200  POKE 232,216: POKE 233,29
  20. 210  GOSUB 1280
  21. 220  GOSUB 240
  22. 230  GOTO 450
  23. 240  HPLOT 0,1 TO 0,3: HPLOT 1,0 TO 1,4 TO 2,4 TO 2,3 TO 3,3 TO 3,7: HPLOT 4,4 TO 4,6: HPLOT 3,7 TO 0,7 TO 0,6 TO 1,6
  24. 250  HPLOT 139,0 TO 139,7: HPLOT 140,0 TO 140,7: HPLOT 142,0 TO 142,7: HPLOT 143,0 TO 143,7: HPLOT 141,3: HPLOT 147,0 TO 147,7: HPLOT 146,0 TO 146,7
  25. 260  HPLOT 150,1 TO 150,3: HPLOT 151,0 TO 151,4 TO 152,4 TO 152,3 TO 153,3 TO 153,7: HPLOT 154,4 TO 154,6: HPLOT 153,7 TO 150,7 TO 150,6 TO 151,6
  26. 270  HPLOT 2,0 TO 4,0 TO 1,4 TO 1,3
  27. 280  HPLOT 152,0 TO 154,0 TO 151,4 TO 151,3
  28. 290  HPLOT 7,1 TO 7,6: HPLOT 8,0 TO 8,7 TO 11,7 TO 11,6 TO 10,6
  29. 300  HPLOT 157,1 TO 157,6: HPLOT 158,0 TO 158,7 TO 161,7 TO 161,6 TO 160,6
  30. 310  HPLOT 8,0 TO 11,0 TO 11,1 TO 10,1
  31. 320  HPLOT 158,0 TO 161,0 TO 161,1 TO 160,1
  32. 330  HPLOT 14,1 TO 14,6: HPLOT 15,0 TO 15,7: HPLOT 16,0: HPLOT 16,7
  33. 340  HPLOT 164,1 TO 164,6: HPLOT 165,0 TO 165,7: HPLOT 166,0: HPLOT 166,7
  34. 350  HPLOT 18,1 TO 18,6: HPLOT 17,0 TO 17,7
  35. 360  HPLOT 168,1 TO 168,6: HPLOT 167,0 TO 167,7
  36. 370  HPLOT 21,0 TO 21,7 TO 22,7 TO 22,0 TO 24,0 TO 24,7 TO 25,7 TO 25,4 TO 23,4 TO 23,3 TO 24,3 TO 25,2 TO 25,1: HCOLOR= 0: HPLOT 25,4: HCOLOR= 3
  37. 380  HPLOT 171,0 TO 171,7 TO 172,7 TO 172,0 TO 174,0 TO 174,7 TO 175,7 TO 175,4 TO 173,4 TO 173,3 TO 174,3 TO 175,2 TO 175,1: HCOLOR= 0: HPLOT 175,4: HCOLOR= 3
  38. 390  HPLOT 28,1 TO 28,6: HPLOT 29,0 TO 29,7 TO 32,7 TO 32,6 TO 31,6
  39. 400  HPLOT 178,1 TO 178,6: HPLOT 179,0 TO 179,7 TO 182,7 TO 182,6 TO 181,6
  40. 410  HPLOT 29,0 TO 32,0 TO 32,1 TO 31,1: HPLOT 30,3 TO 31,3
  41. 420  HPLOT 179,0 TO 182,0 TO 182,1 TO 181,1: HPLOT 180,3 TO 181,3
  42. 430  HPLOT 35,2 TO 36,2 TO 36,3 TO 35,2: HPLOT 35,5 TO 36,5 TO 36,6 TO 35,5
  43. 440  HPLOT 185,2 TO 186,2 TO 186,3 TO 185,2: HPLOT 185,5 TO 186,5 TO 186,6 TO 185,5: RETURN 
  44. 450  FOR I = 0 TO 272  STEP 4: HPLOT I,160: NEXT 
  45. 460  FOR MK = 1 TO 17: IF  PEEK( -16384) = 77 +128  THEN MK = 17
  46. 470  READ NM: READ MN: POKE 6,NM: POKE 7,MN: CALL 768: NEXT 
  47. 480 SC = 0
  48. 490 PF = 15:FF = 0
  49. 500 X = 140:F = 0:NW = 0:DC = 1
  50. 510 X = 140
  51. 520 NW = NW +1:FF = FF +1: IF FF = 4  THEN FF = 1
  52. 530 MF = MF +1:NF = MF
  53. 540 NL = 1:
  54. 550  FOR I = 1 TO NF:FX(I) =  INT((25 * RND(1))):FX(I) = FX(I) *10 +20:FY(I) = 15: NEXT 
  55. 560  FOR I = 1 TO NF:FT(I) = 20 -I -NW: IF FT(I) <3  THEN FT(I) = 3
  56. 570  NEXT 
  57. 580 FT(NF) = 50
  58. 590  FOR XX = 1 TO NF
  59. 600  FOR I = 1 TO FT(NL)
  60. 610  IF I = 35  AND FT(NL) = 50  THEN  HCOLOR= 3:MSI = MSI: DRAW FF +2 AT PF,180:PF = PF +15: IF PF = 270  THEN  HCOLOR= 0: FOR Y = 179 TO 191: HPLOT 0,Y TO 279,Y: NEXT :PF = 15
  61. 620  FOR O = 1 TO NL -1
  62. 630  IF FY(O) = 200  THEN 700
  63. 640  HCOLOR= 0: DRAW FF +2 AT FX(O),FY(O)
  64. 650 FY(O) = FY(O) +3
  65. 660  HCOLOR= 3
  66. 670  DRAW FF +2 AT FX(O),FY(O)
  67. 680  IF F = 1  THEN  IF FX(O) = BX  AND BY <FY(O) +10  AND BY >FY(O) -13  THEN  HCOLOR= 0: DRAW FF +2 AT FX(O),FY(O): DRAW 17 AT BX,BY: HCOLOR= 3: DRAW 6 AT FX(O),FY(O): HCOLOR= 0: DRAW 6 AT FX(O),FY(O):F = 0:FY(O) = 200: GOSUB 1240: GOSUB 1160: GOTO 700
  68. 690  IF FY(O) =  >153  THEN  GOSUB 880
  69. 700  NEXT O
  70. 710  REM **********************
  71. 720  HCOLOR= 0: DRAW 1 AT X,153: DRAW 2 AT X +2,161
  72. 730  IF  PEEK(9000) = 50  THEN 780
  73. 740  IF  PEEK( -16384) = 149  AND X <261  THEN X = X +10
  74. 750  IF  PEEK( -16384) = 136  AND X >21  THEN X = X -10
  75. 760  IF F = 0  THEN  IF  PEEK( -16384) = 193  THEN F = 1:BX = X:BY = 162: POKE  -16368,0
  76. 770  GOTO 810
  77. 780  IF  PDL(0) >254  AND X <261  THEN X = X +10
  78. 790  IF  PDL(0) <6  AND X >21  THEN X = X -10
  79. 800  IF F = 0  THEN  IF  PEEK( -16287) >127  THEN F = 1:BX = X:BY = 162
  80. 810  HCOLOR= 3: DRAW 1 AT X,153: DRAW 2 AT X +2,161
  81. 820  IF F = 1  THEN  HCOLOR= 0: DRAW 17 AT BX,BY:BY = BY -21: IF BY <22  THEN F = 0
  82. 830  IF F = 1  THEN  HCOLOR= 3: DRAW 17 AT BX,BY
  83. 840  NEXT I:NL = NL +1
  84. 850  NEXT XX
  85. 860  GOTO 520
  86. 870  REM 
  87. 880  HCOLOR= 0: DRAW FF +2 AT FX(O),FY(O): GOSUB 1230
  88. 890 M = FX(O):P = FX(O): FOR PP = 0 TO 272:M = M -1:P = P +1
  89. 900  IF M =  >0  THEN  HPLOT M,160
  90. 910  IF P =  <272  THEN  HPLOT P,160
  91. 920  IF M <X  AND P >X  THEN PP = 272
  92. 930  IF M <0  AND P >272  THEN PP = 272
  93. 940  NEXT 
  94. 950  DRAW 1 AT X,153: DRAW 2 AT X +2,161:XX = 20
  95. 960  FOR Z = 153 TO 170: HCOLOR= 0: DRAW 1 AT X,Z -1: DRAW 2 AT X +2,Y +7
  96. 970  HCOLOR= 3: DRAW 1 AT X,Z: DRAW 2 AT X +2,Z +8: FOR I = 1 TO XX/2: NEXT I:XX = XX -1: NEXT 
  97. 980  HCOLOR= 0: DRAW 1 AT X,Z: DRAW 2 AT X +2,Z +8: HCOLOR= 3
  98. 990  FOR O = 1 TO 3
  99. 1000  FOR LL = 1 TO 10: POKE 6,0: POKE 7,1: CALL 768: NEXT 
  100. 1010 Y = 173
  101. 1020  IF X >59  THEN  HPLOT X -9 *O,Y +6 *O TO X -20 *O,Y +5 *O TO X -10 *O,Y +4 *O TO X -13 *O,Y +2 *O TO X -8 *O,Y +3 *O
  102. 1030  FOR LL = 1 TO 10: POKE 6,0: POKE 7,1: CALL 768: NEXT 
  103. 1040  IF X >59  THEN  HPLOT  TO X -11 *O,Y -1 *O TO X -7 *O,Y +1 *O TO X -8 *O,Y -5 *O TO X -6 *O,Y -2 *O TO X -5 *O,Y -5 *O TO X -2 *O,Y -2 *O TO X,Y -7 *O
  104. 1050  FOR LL = 1 TO 10: POKE 6,0: POKE 7,1: CALL 768: NEXT 
  105. 1060  IF X <219  THEN  HPLOT X +9 *O,Y +6 *O TO X +20 *O,Y +5 *O TO X +10 *O,Y +4 *O TO X +13 *O,Y +2 *O TO X +8 *O,Y +3 *O TO X +11 *O,Y -1 *O
  106. 1070  FOR LL = 1 TO 10: POKE 6,0: POKE 7,1: CALL 768: NEXT 
  107. 1080  IF X <219  THEN  HPLOT  TO X +7 *O,Y +1 *O TO X +8 *O,Y -5 *O TO X +6 *O,Y -2 *O TO X +5 *O,Y -5 *O TO X +2 *O,Y -2 *O TO X,Y -7 *O
  108. 1090  NEXT O
  109. 1100  GOSUB 1360
  110. 1110 : HOME : TEXT : VTAB 8: PRINT "SCORE:";SC: VTAB 10: GOSUB 1460
  111. 1120  POKE  -16368,0
  112. 1130  GET A$: IF A$ = "P"  OR A$ = "K"  THEN  POKE 9000,(50 *(A$ = "P") +10 *(A$ = "K")): RUN 100
  113. 1140  IF A$ = "Q"  THEN  HOME : END 
  114. 1150  GOTO 1130
  115. 1160  HCOLOR= 0:SC$ =  STR$(SC):SR =  LEN(SC$): FOR W = 1 TO SR:WW$ =  MID$ (SC$,W,1):WW =  VAL(WW$): DRAW WW +7 AT W *7 +37,5: NEXT 
  116. 1170 SC = SC +10 *(FF +2)
  117. 1180  HCOLOR= 3:SC$ =  STR$(SC):SR =  LEN(SC$): FOR W = 1 TO SR:WW$ =  MID$ (SC$,W,1):WW =  VAL(WW$): DRAW WW +7 AT W *7 +37,5: NEXT : IF SC >HS  THEN HS = SC
  118. 1190  RETURN 
  119. 1200  POKE 768,173: POKE 769,48: POKE 770,192: POKE 771,136: POKE 772,208: POKE 773,4: POKE 774,198: POKE 775,7
  120. 1210  POKE 776,240: POKE 777,8: POKE 778,202: POKE 779,208: POKE 780,246: POKE 781,166: POKE 782,6: POKE 783,76: POKE 784,0: POKE 785,03: POKE 786,96
  121. 1220  RETURN 
  122. 1230  FOR FD = 1 TO 3: POKE 6,200: POKE 7,30: CALL 768: POKE 6,80: POKE 7,30: CALL 768: NEXT : RETURN 
  123. 1240 SN =  INT(50 * RND(1)) +1
  124. 1250 ND =  INT(50 * RND(1)) +1
  125. 1260  FOR O = 1 TO 7: POKE 6,SN: POKE 7,1: CALL 768: POKE 6,ND: POKE 7,1: CALL 768: NEXT 
  126. 1270  RETURN 
  127. 1280 HS$ =  STR$(HS):SR =  LEN(HS$): FOR W = 1 TO SR:WW$ =  MID$ (HS$,W,1):WW =  VAL(WW$): DRAW WW +7 AT W *7 +190,5: NEXT 
  128. 1290  RETURN 
  129. 1300 D$ =  CHR$(4): ONERR  GOTO 1490
  130. 1310  PRINT D$
  131. 1320  PRINT D$"BLOAD HISCORE": POKE 216,0
  132. 1330  FOR I = 1 TO  PEEK(8195)
  133. 1340 NC =  PEEK(8195 +I):HS$ = HS$ + CHR$(NC): NEXT 
  134. 1350 HS =  VAL(HS$): RETURN 
  135. 1360 HS$ =  STR$(HS)
  136. 1370  POKE 8195, LEN(HS$)
  137. 1380  FOR O = 1 TO  LEN(HS$)
  138. 1390  POKE 8195 +O, ASC( MID$ (HS$,O,1)): NEXT 
  139. 1400 D$ =  CHR$(4)
  140. 1410  PRINT D$
  141. 1420  PRINT D$"BSAVE HISCORE,A8195,L8"
  142. 1430  RETURN 
  143. 1440  TEXT : HOME : PRINT "SUCCESSIVE WAVES OF EVIL SHAPE TABLES": PRINT "WILL DESCEND DOWN ON YOU.  WITH THE ": PRINT "PADDLES, JOYSTICK, OR KEYBOARD": PRINT "YOUR MISSION IS TO DESTROY THEM ": PRINT "BEFORE THEY REACH THE ENERGY LINE ": PRINT "SUSPENDING YOUR SHIP."
  144. 1450  PRINT : PRINT "ALIENS ARE WORTH 30,40 OR 50 POINTS": PRINT 
  145. 1460  PRINT "PRESS:": PRINT : PRINT "   P-FOR PADDLE/JOYSTICK CONTROL": PRINT "   K-FOR KEYBOARD CONTROL": PRINT "      (ARROWS MOVE LEFT/RIGHT)": PRINT "      ('A' KEY FIRES AND STOPS)": PRINT "   Q-TO QUIT"
  146. 1470  PRINT : PRINT : PRINT : PRINT "  (PRESS 'M' DURING MUSIC FOR SILENCE)": PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **": VTAB 17: HTAB 20
  147. 1480  RETURN 
  148. 1490  CALL  -10621: IF  PEEK(222) < >6  THEN 1520
  149. 1500  POKE 8195,1: FOR R = 8196 TO 8202: POKE R,0: NEXT 
  150. 1510  PRINT D$"BSAVE HISCORE,A8195,L8"
  151. 1520  RUN 100